/*
 *
 * Copyright (c) 2006-2020, Speedment, Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); You may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at:
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package com.speedment.runtime.connector.sqlite.internal.util;

import com.speedment.runtime.config.Document;
import com.speedment.runtime.config.trait.HasId;
import com.speedment.runtime.config.trait.HasMainInterface;
import com.speedment.runtime.config.trait.HasName;
import com.speedment.runtime.config.trait.HasParent;

import java.util.StringJoiner;

/**
 * Utility class for writing pretty output to the log.
 *
 * @author Emil Forslund
 * @since  3.1.10
 */
public final class LoggingUtil {

    public static <P extends HasId & HasName,
        D extends Document & HasId & HasName & HasMainInterface & HasParent<P>>
    String describe(D doc) {

        return new StringJoiner(" ")
            .add(doc.mainInterface().getSimpleName())
            .add(doc.getId()).add("in")
            .add(doc.getParentOrThrow().getId())
            .toString();
    }

    private LoggingUtil() {}
}
